1. Field of the Invention
The invention relates to the field of methods and apparatus operable to identify desired information in a stream of information on a signal path according to programmable criteria, such that a selected subset of information or packets are processed and other information is ignored. In particular, the invention concerns a programmable apparatus that accepts selection criteria from a user and monitors and selects information data packets according to the criteria, for processing steps such as storage, display, printing or the like. It is an aspect of the invention to provide for recognition of relevant packets on a communication line without requiring processing by a data processing system to which the communication line is connected.
2. Prior Art
There are various situations and various types of communication signal paths in which it would be desirable to enable a selection of data to be processed and to cause other data to be ignored or perhaps processed differently. One example is a broadcast data network, i.e., a network wherein data are transmitted generally to a number of subscriber stations. The data are subdivided into data set groupings, such as a number of consecutive bytes typically including leading and/or trailing marker or information bytes or the like, which groupings are termed "packets." The present invention is applicable to a range of types of such communication systems and to different types of data set groupings. However, an exemplary usage of such a device is in connection with packets from a broadcast data network, and in particular wherein certain packets of data are of interest to a subset of receivers coupled to the data network and not to others.
A packet is a sequence of bytes delivered by the communication line that are rendered distinct from other sequences of bytes, according to a protocol applied when the bytes are encoded and decoded. Packet techniques are well known and include, for example, the EtherNet protocol (IEEE standard 802.3) and commercial packet protocols such as the Synchronous Data Link protocol (SDLC) and X.25. An external circuit monitors the incoming communication line and determines when the packet begins. Bytes of the packet are then processed until packet reception is complete.
Commercially available circuits and interfaces are known for performing the tasks of recognizing the beginning of a packet and processing bytes until complete, for example as known from a byte count, end marker or the like. The generic function of receiving packets is thus known. However, once a packet or sequence of bytes is extracted from the communication network, there are a variety of possibilities as to how the encoded data are to be processed.
In a conventional broadcast network, the sender of the data packet encodes information that explicitly determines a recipient, or a set of recipients, to whom the data packet is directed. The recipient, or set of recipients, is identified in the packet by the sender inserting specific bytes in the message at the time of transmission. Conventional circuitry as described above, for example, recognizes information at a predetermined byte or bit position, typically in a header block at the start of the packet. This information is used to identify the intended receiver or receivers. Only packets destined for the respective data processing equipment require intervention by the data processing equipment and other packets can be ignored.
The distinct encoding and decoding of packets conventionally is used for addressing and for authorization purposes. The prior art includes specialized circuitry to handle authorization, so that only packets that are authorized for a particular receiver can be received by the attached data processing equipment, for example, to permit access by paying subscribers only. Such addressing or authorization schemes are predicated on recognizing predetermined data values in a header or similar identifying block, typically a fixed and small number of specific values in predetermined bit or byte positions in the first few bytes of a packet. Known authorization and addressing devices as described rely on a simple criterion for determining if a packet should be coupled through from the communication line to the attached data processing equipment, although there are various specific applications, including authorization codes, unique network address codes, and/or encoding of "broadcast" packets intended for reception by all data processing equipment attached to the communications network and the like.
In a public information broadcast network, information on the network is spontaneously volunteered by one or more transmitting devices. Often a plurality of programs are broadcast simultaneously over a medium, for example as known in connection with cable television, and selection codes may be incorporated in the signals to handle authorization and/or selection for processing. It is possible to categorize the information by its transmission channel, by scheduling and the like, or to provide a category code in the header. In this manner, different categories of information can be transmitted simultaneously or successively, and the decision to accept or reject a particular packet can be made independently at each receiver by hardware and/or manual switching means. If available, manual user selections are made based on program content, but as a practical matter, the content is not gleaned from the signal. It is provided by other means associated with the source of the signal and the user or switching means simply enables and disables coupling between the user's receiver and one of a small number of sources.
In connection with data transmission, if a packet does not include identifying information such as an address or category designation or the like, or if it is desirable to select and reject packets within some arbitrary category code of interest to the user or perhaps programmed into the user's processing equipment, it may be necessary for the receiving equipment to examine the entire contents of the packet in order to determine if the packet should be accepted or rejected. There is therefore a processing problem in the situation where the packet lacks encoding or categorization data that a particular recipient of the packet can use to distinguish desirable packets from undesirable ones, and instead the decision is to be based on data content and not on addressing or categorization codes. The decision must be based on the presence or absence of particular information such as a series of bytes, data ranges, Boolean combinations and similar attributes that potentially may occur anywhere in the data. Conventionally, if data packets are to be accepted and rejected on this basis, it is necessary for the data processing equipment to receive and store every packet and then to examine the packets for the user's selection criteria.
It would be advantageous if the data processing equipment could be relieved of the requirement to store and examine the data packets, which would allow the equipment to be employed more fully for processing the data packets instead of determining their suitability. The present invention provides an optimal programmable packet filter for this purpose, that is responsive to the basic data processing equipment and moreover is programmed with decision criteria from the basic processing equipment. The selection of packets need not be based on their source or any other fixed field, but instead can be based on arbitrarily complex content criteria. Effectively, this permits the user, and/or the user's processing equipment, to define categories that are much more versatile and variable than any selection of sources, channels or encoded authorization and identifying codes. More significantly, this permits the receiver to define useful categories that could not have been anticipated by the information broadcaster.
It is known how to check for particular data in a record using a dedicated device rather than a general purpose processing apparatus. U.S. Pat. No. 4,598,385--Kessels et al., for example, teaches a device for handling database records that are subdivided into fields of variable value, and determining whether the information in a particular field matches a selection data value. The database records, which are stored in a system memory element, are serially shifted through a comparison element to which the selection value is coupled. At least one complete record (and according to one embodiment, two records) is stored, and the selection value or reference record is stored. A mask is defined for selecting the field of the record to be compared to the reference record and a decision is reached as to whether the selected portions match. Further comparisons are possible (by changing the mask) to check other associated data values in a record if the initially selected field values match. This arrangement is useful for rigidly formatted database records, but is sensitive to the field position or byte position of the data in the record. The device looks for an expected data record at an expected byte position, and is useful only for a known fixed format as characteristic of database records and of identifying codes in packet headers. However, it would be advantageous if records could be selected and filtered independently of alignment and similar formatting particulars, preferably using minimal memory, and preferably permitting decisions based on more versatile content-based comparisons. In this manner, according to the present invention, a meaningful content-based decision for selection and rejection of records is made while expending minimal memory and processing resources of the underlying data processing device.